/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gov.mtc.dgac.licencias.bean;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author elvis
 */
@Entity
@Table(name = "AUDITORIA")
@NamedQueries({@NamedQuery(name = "AuditoriaTO.findByCodAuditoria", query = "SELECT a FROM AuditoriaTO a WHERE a.codAuditoria = :codAuditoria"), @NamedQuery(name = "AuditoriaTO.findByFecInicProgr", query = "SELECT a FROM AuditoriaTO a WHERE a.fecInicProgr = :fecInicProgr"), @NamedQuery(name = "AuditoriaTO.findByFecTermProgr", query = "SELECT a FROM AuditoriaTO a WHERE a.fecTermProgr = :fecTermProgr"), @NamedQuery(name = "AuditoriaTO.findByFecInicEjec", query = "SELECT a FROM AuditoriaTO a WHERE a.fecInicEjec = :fecInicEjec"), @NamedQuery(name = "AuditoriaTO.findByFecTermEjec", query = "SELECT a FROM AuditoriaTO a WHERE a.fecTermEjec = :fecTermEjec")})
public class AuditoriaTO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    @Id
    @GeneratedValue(generator = "SEQAUDITORIA")
    @SequenceGenerator(name="SEQAUDITORIA", sequenceName="SEQ_AUDITORIA",allocationSize=1)
    @Column(name = "COD_AUDITORIA", nullable = false)
    private Long codAuditoria;    
    @Column(name = "FEC_INIC_PROGR")
    @Temporal(TemporalType.DATE)
    private Date fecInicProgr;
    @Column(name = "FEC_TERM_PROGR")
    @Temporal(TemporalType.DATE)
    private Date fecTermProgr;
    @Column(name = "FEC_INIC_EJEC")
    @Temporal(TemporalType.DATE)
    private Date fecInicEjec;
    @Column(name = "FEC_TERM_EJEC")
    @Temporal(TemporalType.DATE)
    private Date fecTermEjec;
    
    @JoinColumn(name = "COD_AUDITOR_TIPO", referencedColumnName = "COD_AUDITOR_TIPO")
    @ManyToOne
    private AuditorTipoauditTO codAuditorTipo;
    @JoinColumn(name = "COD_TIPO_AUDITORIA", referencedColumnName = "COD_TIPO_AUDITORIA")
    @ManyToOne
    private TipoAuditoriaTO codTipoAuditoria;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "auditoriaTO")
    private Collection<AuditoriaProcedimientoTO> auditoriaProcedimientoTOCollection;
     
    public AuditoriaTO() {
        this.codTipoAuditoria = new TipoAuditoriaTO();
        this.codAuditorTipo = new AuditorTipoauditTO();
    }

    public AuditoriaTO(long codAuditoria) {
        this.codAuditoria = codAuditoria;
        this.codTipoAuditoria = new TipoAuditoriaTO();
        this.codAuditorTipo = new AuditorTipoauditTO();
    }

    public Long getCodAuditoria() {
        return codAuditoria;
    }

    public void setCodAuditoria(Long codAuditoria) {
        this.codAuditoria = codAuditoria;
    }

    public Date getFecInicProgr() {
        return fecInicProgr;
    }

    public void setFecInicProgr(Date fecInicProgr) {
        this.fecInicProgr = fecInicProgr;
    }

    public Date getFecTermProgr() {
        return fecTermProgr;
    }

    public void setFecTermProgr(Date fecTermProgr) {
        this.fecTermProgr = fecTermProgr;
    }

    public Date getFecInicEjec() {
        return fecInicEjec;
    }

    public void setFecInicEjec(Date fecInicEjec) {
        this.fecInicEjec = fecInicEjec;
    }

    public Date getFecTermEjec() {
        return fecTermEjec;
    }

    public void setFecTermEjec(Date fecTermEjec) {
        this.fecTermEjec = fecTermEjec;
    }

    public Collection<AuditoriaProcedimientoTO> getAuditoriaProcedimientoTOCollection() {
        return auditoriaProcedimientoTOCollection;
    }

    public void setAuditoriaProcedimientoTOCollection(Collection<AuditoriaProcedimientoTO> auditoriaProcedimientoTOCollection) {
        this.auditoriaProcedimientoTOCollection = auditoriaProcedimientoTOCollection;
    }

    public AuditorTipoauditTO getCodAuditorTipo() {
        return codAuditorTipo;
    }

    public void setCodAuditorTipo(AuditorTipoauditTO codAuditorTipo) {
        this.codAuditorTipo = codAuditorTipo;
    }

    public TipoAuditoriaTO getCodTipoAuditoria() {
        return codTipoAuditoria;
    }

    public void setCodTipoAuditoria(TipoAuditoriaTO codTipoAuditoria) {
        this.codTipoAuditoria = codTipoAuditoria;
    }
    
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codAuditoria != null ? codAuditoria.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof AuditoriaTO)) {
            return false;
        }
        AuditoriaTO other = (AuditoriaTO) object;
        if ((this.codAuditoria == null && other.codAuditoria != null) || (this.codAuditoria != null && !this.codAuditoria.equals(other.codAuditoria))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "licencias_dto.AuditoriaTO[codAuditoria=" + codAuditoria + "]";
    }



}
